#ifndef OPropagationModifier_H__
#define OPropagationModifier_H__

enum
{
	// Dynamic attributes defined on enum class PlugId
	prop_PLUGS = 1000,

	//////////////////////////////////////////////////////////////////////////
	// Object attributes -- DO NOT CHANGE, attribute keys on saved projects
	prop_START = 2000,

	// Attributes
	prop_StrandGroupAttribute,
	prop_StrandGroupPatternAttribute,
	prop_RandomSeedAttribute,
	prop_RootGenerationMethodAttribute,
	prop_RootCountAttribute,
	prop_VerticesPerRootCountAttribute,
	prop_CountPerStrandAttribute,
	prop_LowRangeAttribute,
	prop_HighRangeAttribute,
	prop_IsLengthRelativeToBaseStrandAttribute,
	prop_IsFacingSurfaceAttribute,
	prop_SideCountAttribute,
	prop_SelectedSideAttribute,
	prop_TargetStrandGroupAttribute,
	prop_TwistValueAttribute,
	prop_TwistRandomnessAttribute,
	prop_TwistCurveAttribute,
	prop_FanningAttribute,
	prop_FanningRandomnessAttribute,
	prop_FanningCurveAttribute,
	prop_LengthAttribute,
	prop_LengthRandomnessAttribute,
	prop_LengthCurveAttribute,
	prop_DistributionCurveAttribute,
	prop_DistributionChannelAttribute,
	prop_DistributionMultiplierAttribute,
	prop_OperatorIdAttribute,	// Hidden
	
	// Override controls
	prop_TwistOverrideAttribute = 2100,
	prop_TwistRandomnessOverrideAttribute,
	prop_TwistCurveOverrideAttribute,
	prop_FanningOverrideAttribute,
	prop_FanningRandomnessOverrideAttribute,
	prop_FanningCurveOverrideAttribute,
	prop_LengthOverrideAttribute,
	prop_LengthRandomnessOverrideAttribute,
	prop_LengthCurveOverrideAttribute,
	prop_DistributionCurveOverrideAttribute,
	
	// Override Arrays
	prop_PerStrandSideIndicesAttribute = 2200,
	
	prop_PerStrandSideTwistsAttribute,
	prop_PerStrandSideTwistsRandomnessAttribute,
	prop_TwistCurveOverrideAttribute_Array,
	prop_PerStrandSideFanningAttribute,
	prop_PerStrandSideFanningRandomnessAttribute,
	prop_FanningCurveOverrideAttribute_Array,
	prop_PerStrandSideLengthsAttribute,
	prop_PerStrandSideLengthsRandomnessAttribute,
	prop_LengthCurveOverrideAttribute_Array,
	prop_DistributionCurveOverrideAttribute_Array,
	
	prop_StrandSideTwistCurveKnotCountsAttribute,
	prop_StrandSideTwistCurvesPositionsAttribute,
	prop_StrandSideTwistCurvesValuesAttribute,
	prop_StrandSideTwistCurvesInterpolationsAttribute,
	prop_StrandSideFanningCurveKnotCountsAttribute,
	prop_StrandSideFanningCurvesPositionsAttribute,
	prop_StrandSideFanningCurvesValuesAttribute,
	prop_StrandSideFanningCurvesInterpolationsAttribute,
	prop_StrandSideLengthCurveKnotCountsAttribute,
	prop_StrandSideLengthCurvesPositionsAttribute,
	prop_StrandSideLengthCurvesValuesAttribute,
	prop_StrandSideLengthCurvesInterpolationsAttribute,
	prop_StrandSideDistributionCurveKnotCountsAttribute,
	prop_StrandSideDistributionCurvesPositionsAttribute,
	prop_StrandSideDistributionCurvesValuesAttribute,
	prop_StrandSideDistributionCurvesInterpolationsAttribute,
	prop_UniformRandomnessAttribute,
	prop_AddRootPositionChannelAttribute,
	prop_TextureMappingMethodAttribute,
	
	//////////////////////////////////////////////////////////////////////////
	
	prop_Override_Group = 3000,
	prop_ResetStrandSide_Button,
	
	prop_END
};

enum
{
	// Same order as Propagator::RootGenerationMethod
	prop_RootGenerationMethodAttribute_UNIFORM,
	prop_RootGenerationMethodAttribute_RANDOM,
	prop_RootGenerationMethodAttribute_VERTEX,
	//
	prop_RootGenerationMethodAttribute_Count
};

enum
{
	// Same order as Propagator::TextureMappingMethod
	prop_TextureMappingMethodAttribute_None,
	prop_TextureMappingMethodAttribute_InheritFromBaseStrand,
	prop_TextureMappingMethodAttribute_FlatMap,
	//
	prop_TextureMappingMethodAttribute_Count
};

#endif
